home *** CD-ROM | disk | FTP | other *** search
- /* DriverGestaltHandler.c */
- /*
- * DriverGestaltHandler.c
- * Copyright © 1994 Apple Computer Inc. All rights reserved.
- *
- * DriverGestaltHandler is called for PBStatus 43 (driver gestalt) calls. This
- * particular implementation is a semi-temporary hack that shows how this will
- * be implemented.
- */
- #include <Errors.h>
- #include <Devices.h>
- #include <MixedMode.h>
- #include <Memory.h>
- #include <Traps.h>
- #include <Files.h>
- #include <Devices.h>
- #include "NullDriver.h"
-
- #ifndef FALSE
- #define FALSE 0
- #define TRUE 1
- #endif
-
- /*
- * Defined Driver Gestalt selectors.
- */
- enum {
- kDriverGestaltSync = 'sync', /* TRUE if driver is only synchronous */
- kDriverGestaltBoot = 'boot', /* Drive value for PRAM (longword) */
- kDriverGestaltDeviceType = 'devt', /* Device type */
- kDriverGestaltInterface = 'intf', /* Underlying interface driver uses */
- kDriverGestaltVersion = 'vers', /* Driver 'vers' resource value */
- kDriverGestaltStorage = 'lpwr' /* Does driver support power saving? */
- };
-
- /* Currently defined values for device type: */
- /* 'disk' - standard r/w disk drive */
- /* 'tape' - tape drive */
- /* 'prnt' - printer */
- /* 'proc' - processor */
- /* 'worm' - write-once */
- /* 'cdrm' - cd-rom drive */
- /* 'flop' - floppy disk drive */
- /* 'scan' - scanner */
-
-
- /* Currently defined values for interface type */
- /* 'scsi' */
- /* 'pcmc' - pcmcia */
- /* 'ide ' */
- /* 'pci ' */
- /* 'nbus' - nubus card */
-
- /*
- * Status parameter block for drvrGestalt calls
- */
- #if defined(powerc) || defined (__powerc)
- #pragma options align=mac68k
- #endif
- struct DriverGestaltParam {
- ParamBlockHeader
- short ioCRefNum; /* refNum for I/O operation */
- short csCode; /* == DriverGestaltCode */
- OSType driverGestaltSelector; /* 'sync', 'vers', etc. */
- unsigned long driverGestaltResponse; /* Somesort of longword */
- };
- #if defined(powerc) || defined(__powerc)
- #pragma options align=reset
- #endif
- typedef struct DriverGestaltParam DriverGestaltParam;
-
- /*
- * Called on PBStatus, csCode = 43
- */
- OSErr
- DriverGestaltHandler(
- register CntrlParam *pb
- )
- {
- OSErr status;
- #define PB (*((DriverGestaltParam *) pb))
-
- PB.driverGestaltResponse = 0;
- status = noErr;
- switch (PB.driverGestaltSelector) {
- case kDriverGestaltSync:
- PB.driverGestaltResponse = FALSE;
- break;
- case kDriverGestaltVersion:
- PB.driverGestaltResponse = 0;
- break;
- case kDriverGestaltDeviceType:
- PB.driverGestaltResponse = 'null';
- break;
- case kDriverGestaltInterface:
- PB.driverGestaltResponse = 'null';
- break;
- default:
- status = statusErr;
- break;
- }
- return (status);
- #undef PB
- }
-